JavaScript语言介绍
概念
- 浏览器脚本语言,书写在script标签中- 脚本:一段功能代码块,可以嵌套在其他语言中使用,完成一些额外的功能
 
- 可以编写运行在浏览器上的代码程序
- 属于解释性、弱语言类型编程语言 - 三个组成部分
- ES语法:ECMAScript、主要版本ES5和ES6 
- DOM:文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展标志语言的标准编程接口。
- BOM:浏览器对象模型(Browser Object Model),提供了独立于内容的、可以与浏览器窗口进行互动的对象结构;且由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。三种存在位置行间式:存在于行间事件中1 
 2
 3
 4
 5<div onmouseover="this.style.color = 'red'" onmouseleave="this.style.color = 'orange'">Hello world!</div> 
 i) 行间式代码块书写在一个个全局时间名属性中
 ii) 在某一个标签的某一个事件属性值中,出现的this代表该标签
 iii)该标签对象this可以访问该标签的任意全局属性(style),然后再间接访问具体需要操作的对象(style.color)
内联式:存在于页面script标签中
| 1 | <body> | 
外联式:存在于外部JS文件,通过script标签src属性链接
| 1 | test.js文件 | 
解释性语言特性决定JS代码位置
- 出现在head标签底部:依赖型JS库 - 1 
 2
 3
 4- <head> 
 <title></title>
 <script>在这里</script>
 </head>
- 出现在body标签底部:功能型JS脚本 - 1 
 2
 3
 4
 5
 6
 7- <html> 
 <body>
 </body>
 <script>
 在这里
 </script>
 </html>
JS语法规范
- 注释
| 1 | // 单行注释 | 
- 以分号作为语句结尾(允许省略)
变量的定义
ES5定义变量
| 1 | var num = 10; // 无块级作用域变量 | 
ES6定义变量
| 1 | let num = 10; // 局部变量 | 
| 1 | // ES5 | ES6 | 
四种定义变量的方式
| 1 | 四种定义变量的方式 | 
变量(标识符)的命名规范
- 由字母,数字,_,$组成,不能以数字开头(可以包含中文字符)
- 区分大小写
- 不能出现关键字及保留字
| 1 | // 命名规范 | 
| abstract | arguments | boolean | break | byte | 
| case | catch | char | class* | const | 
| continue | debugger | default | delete | do | 
| double | else | enum* | eval | export* | 
| extends* | false | final | finally | float | 
| for | function | goto | if | implements | 
| import* | in | instanceof | int | interface | 
| let | long | native | new | null | 
| package | private | protected | public | return | 
| short | static | super* | switch | synchronized | 
| this | throw | throws | transient | true | 
| try | typeof | var | void | volatile | 
| while | with | yield | 
三种弹出框
- alert():普通弹出框
| 1 | alert("普通弹出框"); | 
- confirm(“确认框”):确认框
| 1 | var res = confirm("你是猪吗?"); | 
- prompt:输入框
| 1 | var info = prompt("请输入内容:"); | 
四种调试方式
- alert()
- console.log()
- document.write() 和页面中原来的布局在一起出现
- 浏览器断点调试
数据类型
值类型
- number:数字类型
| 1 | var a = 10; //js不区分浮点什么的 | 
- string:字符串类型
| 1 | var a = '10'; //单双引号都一样 | 
- boolean:布尔类型
| 1 | var a = true; | 
- undefined:未定义类型
| 1 | var a = undefined; | 
引用类型
- function:函数类型
| 1 | var a = function(){}; | 
- object:对象类型
| 1 | var a = {}; | 
具体的对象类型
- null:空对象
| 1 | var a = null; | 
- Array:数组对象
| 1 | var a = new Array(1, 2, 3, 4, 5); | 
- Date:时间对象
| 1 | var a = new Date(); | 
- RegExp:正则对象
| 1 | var a = new RegExp(); | 
4、类型转换
- 数字|布尔 转换为 字符串
| 1 | console.log((true + true) * 10 * false); | 
- 布尔|字符串 转换为 数字
| 1 | var a = '10'; // => 10 | 
- 字符串|数字 转换为 布尔
| 1 | var a = 10 or '10' | 
- 自动转换
| 1 | 5 + null // 5 | 
- 特殊产物
| 1 | // NaN: 非数字类型 | 
运算符
算数运算符
前提:n = 5
赋值运算符
前提:x=5,y=5
| 运算符 | 例子 | 等同于 | 运算结果 | 
|---|---|---|---|
| = | x=y | 5 | |
| += | x+=y | x=x+y | 10 | 
| -= | x-=y | x=x-y | 0 | 
| *= | x*=y | x=x*y | 25 | 
| /= | x/=y | x=x/y | 1 | 
| %= | x%=y | x=x%y | 0 | 
比较运算符
前提:x=5
| 运算符 | 描述 | 比较 | 结果 | 
|---|---|---|---|
| == | 等于 | x==”5” | true | 
| === | 绝对等于 | x===”5” | false | 
| != | 不等于 | x!=”5” | fales | 
| !== | 不绝对等于 | x!==”5” | true | 
| > | 大于 | x>5 | false | 
| < | 小于 | x<5 | false | 
| >= | 大于等于 | x>=5 | true | 
| <= | 小于等于 | x<=5 | true | 
逻辑运算符
前提:n=5

三目运算符
| 1 | // 结果 = 条件表达式 ? 结果1 : 结果2; | 
ES6语法解构赋值
- 数组的解构赋值
| 1 | let [a, b, c] = [1, 2, 3] | 
- 对象的解构赋值
| 1 | let {key: a} = {key: 10} | 
- 字符串解构赋值
| 1 | let [a,b,c] = 'xyz' |